package cn.b.sky.user.dao;

import cn.b.sky.user.service.model.MenuInfo;
import cn.b.sky.user.service.model.MenuUrl;
import cn.b.sky.user.service.model.PermissionInfo;
import cn.b.sky.user.service.model.UserInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SecurityDao {

  /**
   * 
   * <strong>Title : listMenuUrl<br></strong>
   * <strong>Description : </strong>获取菜单类型为FORM的菜单的url<br> 
   * <strong>Create on : 2017-3-7 上午10:55:43<br></strong>
   * <p>
   * @param resourceTypeECode
   * @return
   * List<MenuUrl>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MenuUrl> listMenuUrl(String resourceTypeECode);

  /**
   * 
   * <strong>Title : listMenuByUsername<br></strong>
   * <strong>Description : </strong>获取当前用户拥有的菜单权限<br> 
   * <strong>Create on : 2017-3-7 上午10:56:00<br></strong>
   * <p>
   * @param username
   * @return
   * List<MenuInfo>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MenuInfo> listMenuByUsername(@Param("username") String username);

  /**
   * 
   * <strong>Title : listPermission<br></strong>
   * <strong>Description : </strong>获取用户的权限<br> 
   * <strong>Create on : 2017-3-7 上午10:57:18<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @param languageCode
   * @return
   * List<PermissionInfo>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<PermissionInfo> listPermission(@Param("siteCode") String siteCode, @Param("userCode") String userCode,
                                      @Param("languageCode") String languageCode);

  /**
   * 
   * <strong>Title : loadUserByUsername<br></strong>
   * <strong>Description : </strong>获取用户信息通过全名，带工厂的全名<br> 
   * <strong>Create on : 2017-3-7 上午10:57:33<br></strong>
   * <p>
   * @param username
   * @return
   * UserInfo
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  UserInfo loadUserByUsername(@Param("username") String username);

  /**
   * 
   * <strong>Title : loadUser<br></strong>
   * <strong>Description : </strong>获取用户，通过用户名和工厂<br> 
   * <strong>Create on : 2017-3-7 上午10:58:05<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @return
   * UserInfo
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  UserInfo loadUser(@Param("siteCode") String siteCode, @Param("userCode") String userCode);

  /**
   * 
   * <strong>Title : login<br></strong>
   * <strong>Description : </strong>登录验证用户<br> 
   * <strong>Create on : 2017-3-7 上午10:58:20<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @param password
   * @return
   * UserInfo
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  UserInfo login(@Param("siteCode") String siteCode, @Param("userCode") String userCode, @Param("password") String password);

  /**
   * 
   * <strong>Title : selectSiteLocked<br></strong>
   * <strong>Description : </strong>查询工厂的锁定状态<br> 
   * <strong>Create on : 2017-1-20 下午4:07:28<br></strong>
   * <p>
   * @param siteCode
   * @return
   * int
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Integer selectSiteLocked(String siteCode);

  /**
   * 
   * <strong>Title : loadAdministrator<br></strong>
   * <strong>Description : </strong>获取系统超级管理员， sa_user表里<br> 
   * <strong>Create on : 2017-3-7 上午11:16:40<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @return
   * UserInfo
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  UserInfo loadAdministrator(String userCode);
}
